﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
using Microsoft.Xna.Framework.Net;
using Microsoft.Xna.Framework.Storage;

namespace PlanetenGravity.ScreenSystem
{
    public interface IGameScreen
    {
        /// <summary>
        /// Eine Referenz auf das eine(!) Game-Objekt, das immer die verschiedenen Szenen rendert und updatet.
        /// </summary>
        Game1 MainGame { get; set; }

        /// <summary>
        /// Wird aufgerufen, wenn der IGameScreen erstellt wird. Erhält ein GraphicsDeviceManager Objekt zum erstellen von Objekten und
        /// ein ContentManager Objekt um die benötigten Texturen zu laden.
        /// Achtung! In Unload Content wieder entladen!
        /// </summary>
        void Initialize(GraphicsDeviceManager graphics, ContentManager content);

        /// <summary>
        /// Wird aufgerufen, wenn der IGameScreen wieder gelöscht wird.
        /// </summary>
        void UnloadContent();

        void Update(GameTime gameTime);

        void Draw(SpriteBatch spriteBatch, GameTime gameTime);
    }
}